package com.coolingme.pay;

import com.coolingme.pay.paytype.AliPay;
import com.coolingme.pay.paytype.BalancePay;
import com.coolingme.pay.paytype.WechatPay;

import java.util.HashMap;
import java.util.Map;

/**
 * 支付类型
 *
 * @author wangyue
 * @date 2020-09-22 23:03
 */
public class PayType {

    public static final String BALANCE_PAY = "BALANCE_PAY";
    public static final String ALI_PAY     = "ALI_PAY";
    public static final String WECHAT_PAY  = "WECHAT_PAY";

    /**
     * 默认支付方式
     */
    public static String DEFAULT_PAY = BALANCE_PAY;


    /**
     * 支付类型容器
     */
    private static Map<String, Payment> payTypeMap = new HashMap<>();

    /**
     * 初始化容器
     */
    static {
        payTypeMap.put(BALANCE_PAY, new BalancePay());
        payTypeMap.put(ALI_PAY, new AliPay());
        payTypeMap.put(WECHAT_PAY, new WechatPay());
    }

    /**
     * 获取支付实例对象
     *
     * @param type 支付方式
     * @return 支付实例对象
     */
    public static Payment getPayment(String type) {
        if (!payTypeMap.containsKey(type)) {
            return payTypeMap.get(DEFAULT_PAY);
        }
        return payTypeMap.get(type);
    }

}
